package se.zust.sshjpa.service.impl;

import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import se.zust.sshjpa.dao.ContactsDao;
import se.zust.sshjpa.dto.ContactsDto;
import se.zust.sshjpa.entity.Tcontacts;
import se.zust.sshjpa.service.ContactsServiceI;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service
@Transactional
public class ContactsServiceImpl implements ContactsServiceI {
    @Resource
    ContactsDao contactsDao;
    @Override
    public ContactsDto saveContacts(ContactsDto contacts) {
        Tcontacts tcontacts=contactsDao.save(d2e(contacts));
        return e2d(tcontacts);
    }

    @Override
    public void deleteContacts(Integer contactsId) {

    }

    @Override
    public List<ContactsDto> findByName(String name) {
        return e2d(contactsDao.findByNameLike("%"+name+"%"));
    }
    private Tcontacts d2e(ContactsDto dto){
        Tcontacts tcontacts=new Tcontacts();
        BeanUtils.copyProperties(dto,tcontacts);
        return tcontacts;

    }
    private List<Tcontacts> d2e(List<ContactsDto> dtoList){
        List<Tcontacts> tcontactsList=new ArrayList<Tcontacts>();
        if(dtoList==null||dtoList.size()==0)
            return tcontactsList;
        for(ContactsDto dto:dtoList)
            tcontactsList.add(d2e(dto));
        return tcontactsList;

    }
    private ContactsDto e2d(Tcontacts tcontacts){
        ContactsDto dto=new ContactsDto();
        BeanUtils.copyProperties(tcontacts,dto);
        return dto;
    }
    private List<ContactsDto> e2d(List<Tcontacts> tcontactsList){
        List<ContactsDto> contactsDtoList=new ArrayList<ContactsDto>();
        if(tcontactsList==null||tcontactsList.size()==0)
            return contactsDtoList;
        for(Tcontacts tcontacts:tcontactsList)
            contactsDtoList.add(e2d(tcontacts));
        return contactsDtoList;
    }

}
